package org.nowcoder.huawei.c200;

/**
 * 3:可以组成网络的服务器
 * 矩阵的深度优先搜索
 */
public class HC003 {
    static int n, m;
    static int[][] server; // 定义一个矩阵，用于存储服务器的状态
    static boolean[][] visited; // 记录每个位置是否已经被访问过

    public static void main(String[] args) {

    }

    public static int dfs(int i, int j) {
        // 如果当前位置超出矩阵边界或者当前位置没有服务器，则返回0
        if (i < 0 || i >= n || j < 0 || j >= m || server[i][j] == 0) {
            return 0;
        }
        // 如果当前位置已经被访问过，则返回0
        if (visited[i][j]) {
            return 0;
        }

        // 标记当前位置为已访问
        visited[i][j] = true;

        // 分别向上、下、左、右四个方向递归搜索，并累加连通块大小
        int count = 1; // 当前位置有服务器，将count 初始化为1
        count += dfs(i - 1, j); // 上
        count += dfs(i + 1, j); // 下
        count += dfs(i, j - 1); // 左
        count += dfs(i, j + 1); // 右
        return count;
    }
}
